var express = require('express');
var router = express.Router();
//导入lowdb
// const low = require('lowdb')
// const FileSync = require('lowdb/adapters/FileSync');
// const adapter = new FileSync(__dirname + '/../data/db.json');
//导入shortid
// const shortid = require('shortid');

//导入jwt
let jwt = require('jsonwebtoken');
//导入中间件
const checkTokenMiddleware = require('../../middlewares/checkTokenMiddleware')


//导入moment
const moment = require('moment');
const AccountModel = require('../../models/AccountModel');
// console.log(moment('2023-11-14').toDate());
//获取db对象
// const db = low(adapter)
//记账本列表
router.get('/account', checkTokenMiddleware,function(req, res, next) {
  //let accounts = db.get('accounts').value();
  //读取集合信息
  AccountModel.find().sort({time: -1}).exec().then((data) => {
    // 响应成功的提示
    // res.render('list', { accounts: data, moment: moment });
    res.json({
        //响应编号
        code: '0000',
        //响应的信息
        msg: '读取成功',
        //响应的数据
        data: data
    })
  }).catch((err) => {
    // 处理错误
    res.json({
        code: '1001',
        msg: '读取失败！',
        data: null
    })
    // res.status(500).send('读取失败~~~');
  });

});

//添加记录
// router.get('/account/create', function(req, res, next) {
//   res.render('create')
// });

//新增记录
router.post('/account',checkTokenMiddleware,(req,res)=>{
  //生成id
  //let id = shortid.generate();
  //写入文件
  //db.get('accounts').unshift({id:id,...req.body}).write();
  //成功提醒
  //插入数据
  AccountModel.create({
    ...req.body,
    //修改time属性
    time: moment(req.body.time).toDate()
  }).then((data)=>{
    // res.render('success',{msg: '添加成功！',url: '/account'})
    res.json({
        //成功提醒
        code: '0000',
        msg: '添加成功',
        data: data
    })
  }).catch(()=>{
    // res.status(500).send('插入失败~')
    //创建失败
    res.json({
        code:'1002',
        msg: '创建失败',
        data: null
    })
    return;
  })
})

//删除记录
router.delete('/account/:id',checkTokenMiddleware,(req,res)=>{
  //获取params的id参数
  let id = req.params.id;
  //删除
  // db.get('accounts').remove({id:id}).write();
  AccountModel.deleteOne({_id: id}).then((data)=>{
    //提醒
    // res.render('success',{msg: '删除成功！',url: '/account'})
    res.json({
        code: '0000',
        msg: '删除成功',
        data: null

    })
  }).catch((err)=>{
    res.json({
        code: '1003',
        msg: '删除失败',
        data: null
    })
    // res.status(500).send('删除失败~');
  })

})

//获取单个账单信息
router.get('/account/:id',checkTokenMiddleware,(req,res)=>{
    //获取id参数
    let {id} = req.params;
    //查询数据库
    AccountModel.findById(id).then((data)=>{
        //响应成功
        res.json({
            code: '0000',
            msg: '读取成功',
            data: data
        })
    }).catch((err)=>{
        //响应失败
        res.json({
            code: '1004',
            msg: '读取失败',
            data: null
        })  
    })
})

//更新账单信息
router.patch('/account/:id',checkTokenMiddleware,(req,res)=>{
    //获取id参数
    let {id} = req.params;
    //更新数据库
    AccountModel.updateOne({_id:id},req.body).then((data)=>{
        //响应成功
        //查询数据库
        AccountModel.findById(id).then((data)=>{
            //响应成功
            res.json({
                code: '0000',
                msg: '读取成功',
                data: data
            })
        }).catch((err)=>{
            //响应失败
            res.json({
                code: '1004',
                msg: '读取失败',
                data: null
            })  
        })
    }).catch((err)=>{
        //响应失败
        res.json({
            code: '1005',
            msg: '更新失败',
            data: null
        })  
    })
})

module.exports = router;
